/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.com.transportes.service;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import pe.com.transportes.modelo.Admin;
import pe.com.transportes.modelo.BeanN;
import pe.com.transportes.modelo.Chofer;
import pe.com.transportes.modelo.Cliente;
import pe.com.transportes.modelo.Paradas;
import pe.com.transportes.modelo.Ruta;
import pe.com.transportes.dao.AdminDAO;
import pe.com.transportes.dao.AsistenteDAO;
import pe.com.transportes.dao.BusDAO;
import pe.com.transportes.dao.ChoferDAO;
import pe.com.transportes.dao.ClienteDAO;
import pe.com.transportes.dao.ComentarioDAO;
import pe.com.transportes.dao.GastosbusDAO;
import pe.com.transportes.dao.ParadasDAO;
import pe.com.transportes.dao.RutaDAO;
import pe.com.transportes.dao.SalidarutasDAO;
import pe.com.transportes.dao.ZonabusDAO;
import pe.com.transportes.modelo.Asistente;
import pe.com.transportes.modelo.Bus;
import pe.com.transportes.modelo.Comentario;
import pe.com.transportes.modelo.Gastobus;
import pe.com.transportes.modelo.Salidarutas;
import pe.com.transportes.modelo.Zonabus;
import pe.com.transportes.utilitario.ConexionBD;
import pe.com.transportes.utilitario.EnviarCorreo;

/**
 *
 * @author PFR
 */
public class ConsultaService {

   ConexionBD c = new ConexionBD();
   ClienteDAO cliente = new ClienteDAO();
   ChoferDAO chofer = new ChoferDAO();
   RutaDAO ruta = new RutaDAO();
   ParadasDAO paradas = new ParadasDAO();
   AdminDAO admin = new AdminDAO();
   BeanN bm = new BeanN();
    BusDAO bus = new BusDAO();
    AsistenteDAO asistente = new AsistenteDAO();
    ZonabusDAO zona = new ZonabusDAO();
EnviarCorreo e = new EnviarCorreo();
SalidarutasDAO salida = new SalidarutasDAO();
GastosbusDAO gastobus = new GastosbusDAO();
ComentarioDAO comentario = new ComentarioDAO();

    public Connection conectar(){
        
          Connection con = null;
        try {
            con = c.abrirMySql();
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

return con;
    }

    public void RegistrarCliente(Cliente bean){
 Connection con = null;
  con = conectar();
        try {
           con.setAutoCommit(false);
          System.out.println("codigo de cli service"+bean.getCod_cliente());            cliente.insertarcliente(con,bean);
            e.enviarCorreo(bean.getCorreo(),bean.getCod_cliente(),bean.getContraseña());
           con.commit();

        } catch (SQLException ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            try {
                con.rollback();
            } catch (SQLException ex1) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex1);
            }
        }

    finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }

    }


    }
 public BeanN validacliente(int codigo,String password){
           BeanN bm = new BeanN();
            Connection con = null;
             con = conectar();

          Cliente bean = new Cliente();
          ClienteDAO c= new ClienteDAO();

        try {
            bean = c.buscarcliente(con, codigo);
            System.out.println("codigo d cli"+bean.getCod_cliente());
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
                 bm.setError(true);
                 bm.setDescerror("problema con base de datos");
                 bm.setDescsolucion("ingrese mas tarde...");

        }

   if(bean.getContraseña().trim().equals(password.trim())){

              bm.setError(false);

                    }
                   else{

                   bm.setError(true);
        bm.setDescerror("usuario no existe");
       bm.setDescsolucion("debe registrarse");
            System.out.println("usuario no existe");

                 }

              if(bm.isError()==false){
           HashMap m = new HashMap();
                 m.put("respuesta", bean);
            bm.setRespuesta(m);
           }


             try {
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }
                      return bm;
       }

    public void RegistrarChofer(Chofer bean){
 Connection con = null;
  con = conectar();
        try {
            con.setAutoCommit(false);
            chofer.insertarchofer(con,bean);
           con.commit();

        } catch (SQLException ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            try {
                con.rollback();
            } catch (SQLException ex1) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex1);
            }
        }

    finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }

    }


    }

       public void RegistrarAsistente(Asistente bean){
 Connection con = null;
  con = conectar();
        try {
            con.setAutoCommit(false);
            asistente.insertarasistente(con, bean);
           con.commit();

        } catch (SQLException ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            try {
                con.rollback();
            } catch (SQLException ex1) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex1);
            }
        }

    finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }

    }


    }


 public void RegistrarZonabus(Zonabus bean){
 Connection con = null;
  con = conectar();
        try {
            con.setAutoCommit(false);
          zona.insertarzona(con, bean);
           con.commit();

        } catch (SQLException ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            try {
                con.rollback();
            } catch (SQLException ex1) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex1);
            }
        }

    finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }

    }


    }





 public void RegistrarRuta(Ruta bean){
 Connection con = null;
  con = conectar();
        try {
            con.setAutoCommit(false);
          ruta.insertarruta(con, bean);
           con.commit();

        } catch (SQLException ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            try {
                con.rollback();
            } catch (SQLException ex1) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex1);
            }
        }

    finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }

    }


    }
 public void RegistrarParadas(Paradas bean){
 Connection con = null;
  con = conectar();
        try {
            con.setAutoCommit(false);
        paradas.insertarparadas(con, bean);
           con.commit();

        } catch (SQLException ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            try {
                con.rollback();
            } catch (SQLException ex1) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex1);
            }
        }

    finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
    }

    }


  public void RegistrarComentarios(Comentario bean){
 Connection con = null;
  con = conectar();
        try {
            con.setAutoCommit(false);
       comentario.insertarcomentario(con, bean);
           con.commit();

        } catch (SQLException ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            try {
                con.rollback();
            } catch (SQLException ex1) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex1);
            }
        }

    finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
    }

    }


 public void RegistrarBus(Bus bean) throws FileNotFoundException {



      Connection con = null;
  con = conectar();
        try {
            con.setAutoCommit(false);
         bus.insertarbus(con, bean);
           con.commit();

        } catch (SQLException ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            try {
                con.rollback();
            } catch (SQLException ex1) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex1);
            }
        }

    finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }

    }




    }

















public void RegistrarGastobus(Gastobus bean){
 Connection con = null;
  con = conectar();
        try {
            con.setAutoCommit(false);
         gastobus.insertargastobus(con, bean);
           con.commit();

        } catch (SQLException ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            try {
                con.rollback();
            } catch (SQLException ex1) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex1);
            }
        }

    finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }

    }



}








  public void RegistrarSalidas(Salidarutas bean){
 Connection con = null;
  con = conectar();
        try {
            con.setAutoCommit(false);
      salida.insertarsalidas(con, bean);
           con.commit();

        } catch (SQLException ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            try {
                con.rollback();
            } catch (SQLException ex1) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex1);
            }
        }

    finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
    }

}





  public BeanN validaadmin(int codigo,String password){
           BeanN bm = new BeanN();
            Connection con = null;
             con = conectar();

       Admin bean = new Admin();


        try {
            bean = admin.buscaradmin(con, codigo);
            System.out.println("codigo d admin"+bean.getCod_admin());
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
                 bm.setError(true);
                 bm.setDescerror("problema con base de datos");
                 bm.setDescsolucion("ingrese mas tarde...");

        }

   if(bean.getPass_admin().trim().equals(password.trim())){

              bm.setError(false);

                    }
                   else{

                   bm.setError(true);
        bm.setDescerror("usuario no existe");
       bm.setDescsolucion("debe registrarse");
            System.out.println("usuario no existe");

                 }

              if(bm.isError()==false){
           HashMap m = new HashMap();
                 m.put("respuesta", bean);
            bm.setRespuesta(m);
           }


             try {
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }
                      return bm;
       }


  public Cliente BuscarCliente(int cod_cliente){

Cliente bean = new Cliente();
Connection con = conectar();

        try {
           bean = cliente.buscarcliente(con, cod_cliente);
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
}
return bean;

}

    public Comentario BuscarComentariocodcli(int cod_cliente){

Comentario bean = new Comentario();
Connection con = conectar();

        try {
           bean = comentario.buscarcomentario(con, cod_cliente);
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
}
return bean;

}










  public ArrayList<Gastobus> Buscargastobusxdia(String fecha){

ArrayList<Gastobus> lista = new ArrayList<Gastobus>();
Connection con = conectar();

        try {
           lista = gastobus.listagastobusxdia(con,fecha);
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
}
return lista;

}

  
  



  public Ruta Buscarcodruta(String inicio, String fin){

Ruta bean = new Ruta();
Connection con = conectar();

        try {
        bean = ruta.buscarruta(con,inicio,fin);
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
}
return bean;

}




    public Bus Buscarcodbus(int cod_bus){

Bus bean = new Bus();
Connection con = conectar();

        try {
        bean = bus.buscarbus(con,cod_bus);
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
}
return bean;

}








    public ArrayList<Chofer> ListadoChoferes(){

Connection con = conectar();
ArrayList<Chofer> lista = new ArrayList<Chofer>();
        try {
       lista = chofer.Listachoferes(con);
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
}
return lista;

}

    public ArrayList<Asistente> ListadoAsistentes(){


Connection con = conectar();
ArrayList<Asistente> lista = new ArrayList<Asistente>();
        try {
       lista = asistente.Listaasistentes(con);
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
}
return lista;

}

     public ArrayList<Cliente> ListadoClientes(){


Connection con = conectar();
ArrayList<Cliente> lista = new ArrayList<Cliente>();
        try {
       lista = cliente.Listaclientes(con);
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
}
return lista;

}

  public ArrayList<Salidarutas> Listadosalidaxdia(String fecha){


Connection con = conectar();
ArrayList<Salidarutas> lista = new ArrayList<Salidarutas>();
        try {
       lista = salida.listadosalidadia(con, fecha);




        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
}
return lista;

}
      public ArrayList<Bus> Listadobus(){


Connection con = conectar();
ArrayList<Bus> lista = new ArrayList<Bus>();
        try {
       lista = bus.Listabus(con);
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
}
return lista;

}

      public ArrayList<Salidarutas> listadosalida(int cod_ruta,String fecha){


Connection con = conectar();
ArrayList<Salidarutas> lista = new ArrayList<Salidarutas>();
        try {
       lista =salida.buscarsalidas(con, cod_ruta, fecha);
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
}
return lista;

}


     public Salidarutas listadosalida2(int cod_salida){


Connection con = conectar();
Salidarutas r = new Salidarutas();
        try {
       r =salida.buscarsalidas2(con,cod_salida);
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
}
return r;

}
     
         public ArrayList<Gastobus> listadogastobusxmes(String fecha){


Connection con = conectar();
ArrayList<Gastobus> lista = new ArrayList<Gastobus>();
        try {
       lista = gastobus.Listagastobusxmes(con,fecha);
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
}
return lista;

}


     
       public ArrayList<Comentario> Listadocomentarios(){

ArrayList<Comentario> list = new ArrayList<Comentario>();
Connection con = conectar();

        try {
           list = comentario.Listacomentarios(con);
        } catch (Exception ex) {
            Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
        }

finally{
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(ConsultaService.class.getName()).log(Level.SEVERE, null, ex);
            }
}
return list;

}
     
     
     
     
     
     
     
     
     
     





}
